﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using BUSService;
using DTOService;


namespace QuanLyBangDia
{
    public partial class frmQuanLyKhachHang : Form
    {

        MyService myService = new MyService();

        bool flagSearch = false;

        int totalRows = 0;
        int page = 1;
        int rowperPage = 4;
        int totalPages = 0;

        public frmQuanLyKhachHang()
        {
            InitializeComponent();
            this.Icon = QuanLyBangDia.Properties.Resources.HDD;
            gv.Columns.Add("MaKH", "Mã Khách Hàng");
            gv.Columns.Add("HoTen", "Họ Tên");
            gv.Columns.Add("DiaChi", "Địa Chỉ");
            gv.Columns.Add("NgaySinh", "Ngày Sinh");
            gv.Columns.Add("Email", "Email");
            gv.Columns.Add("DienThoai", "Điện Thoại");
            gv.Columns.Add("CMND", "CMND");
            gv.Columns.Add("SoTienDatCoc", "Tiền Cọc");
        }

        private void frmQuanLyKhachHang_Load(object sender, EventArgs e)
        {
            KhachHang[] ls = new KhachHang[] { };
            page = 1;
            totalRows = myService.NumberOfKhachHang();
            totalPages = totalRows > rowperPage ? totalRows / rowperPage + 1 : 1;
            if (totalRows % rowperPage == 0)
                totalPages = totalRows / rowperPage;

            ls = myService.SelectKhachHang(page, rowperPage);
            object[] temp;
            foreach (KhachHang v in ls)
            {
                temp = new object[] { v.MaKH, v.HoTen, v.DiaChi, v.NgaySinh.Split(' ')[0], v.Email, v.DienThoai, v.CMND, v.TienDatCoc };
                gv.Rows.Add(temp);
            }
            gv.Show();
            if (totalPages == 1)
            {
                btnPrev.Enabled = false;
                btnNext.Enabled = false;
            }
            else
            {
                btnPrev.Enabled = false;
                btnNext.Enabled = true;
            }
        }

        private void gv_SelectionChanged(object sender, EventArgs e)
        {
            try
            {
                DataGridViewRow currRow = gv.CurrentRow;
                txtMaKH.Text = currRow.Cells[0].Value.ToString();
                txtHoTen.Text = currRow.Cells[1].Value.ToString();
                txtDiaChi.Text = currRow.Cells[2].Value.ToString();
                string[] date = currRow.Cells[3].Value.ToString().Split('/');
                DateTime dt = new DateTime(int.Parse(date[2]), int.Parse(date[0]), int.Parse(date[1]));
                dtpNgaySinh.Value = dt;
                txtEmail.Text = currRow.Cells[4].Value.ToString();
                txtDienThoai.Text = currRow.Cells[5].Value.ToString();
                txtCMND.Text = currRow.Cells[6].Value.ToString();
                txtTienCoc.Text = currRow.Cells[7].Value.ToString();
            }
            catch
            {
            }
        }

        private void btnThem_Click(object sender, EventArgs e)
        {
            if (txtHoTen.Text == "")
            {
                MessageBox.Show("Nhập họ tên khách hàng !", "Thông báo");
                txtHoTen.Focus();
                return;
            }
            if (txtDiaChi.Text == "")
            {
                MessageBox.Show("Nhập địa chỉ khách hàng !", "Thông báo");
                txtDiaChi.Focus();
                return;
            }
            if (txtDienThoai.Text == "")
            {
                MessageBox.Show("Nhập số điện thoại khách hàng !", "Thông báo");
                txtDienThoai.Focus();
                return;
            }
            if (txtCMND.Text == "")
            {
                MessageBox.Show("Nhập CMND khách hàng !", "Thông báo");
                txtCMND.Focus();
                return;
            }
            if (txtTienCoc.Text == "")
            {
                MessageBox.Show("Nhập tiền đặt cọc khách hàng !", "Thông báo");
                txtTienCoc.Focus();
                return;
            }
            if (dtpNgaySinh.Value.ToShortDateString() == "")
            {
                MessageBox.Show("Nhập ngày sinh khách hàng !", "Thông báo");
                return;
            }
            KhachHang parr = new KhachHang();
            parr.HoTen = txtHoTen.Text;
            parr.NgaySinh = dtpNgaySinh.Value.ToShortDateString();
            parr.Email = txtEmail.Text;
            parr.DienThoai = txtDienThoai.Text;
            parr.CMND = txtCMND.Text;
            parr.TienDatCoc = float.Parse(txtTienCoc.Text);
            parr.DiaChi = txtDiaChi.Text;
            string makh = myService.InsertKhachHang(parr);
            if (makh != "NULL")
            {
                object[] temp = new object[] { makh, parr.HoTen, parr.DiaChi, parr.NgaySinh, parr.Email, parr.DienThoai, parr.CMND, parr.TienDatCoc };
                gv.Rows.Add(temp);
                MessageBox.Show("Đăng ký thành công !", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
                MessageBox.Show("Đăng ký thất bại ! Hãy thử lại sau !", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }

        private void btnCapNhat_Click(object sender, EventArgs e)
        {
            if (txtHoTen.Text == "")
            {
                MessageBox.Show("Nhập họ tên khách hàng !", "Thông báo");
                txtHoTen.Focus();
                return;
            }
            if (txtDiaChi.Text == "")
            {
                MessageBox.Show("Nhập địa chỉ khách hàng !", "Thông báo");
                txtDiaChi.Focus();
                return;
            }
            if (txtDienThoai.Text == "")
            {
                MessageBox.Show("Nhập số điện thoại khách hàng !", "Thông báo");
                txtDienThoai.Focus();
                return;
            }
            if (txtCMND.Text == "")
            {
                MessageBox.Show("Nhập CMND khách hàng !", "Thông báo");
                txtCMND.Focus();
                return;
            }
            if (txtTienCoc.Text == "")
            {
                MessageBox.Show("Nhập tiền đặt cọc khách hàng !", "Thông báo");
                txtTienCoc.Focus();
                return;
            }
            if (dtpNgaySinh.Value.ToShortDateString() == "")
            {
                MessageBox.Show("Nhập ngày sinh khách hàng !", "Thông báo");
                return;
            }
            KhachHang parr = new KhachHang();
            parr.MaKH = txtMaKH.Text;
            parr.HoTen = txtHoTen.Text;
            parr.NgaySinh = dtpNgaySinh.Value.ToShortDateString();
            parr.Email = txtEmail.Text;
            parr.DienThoai = txtDienThoai.Text;
            parr.CMND = txtCMND.Text;
            parr.TienDatCoc = float.Parse(txtTienCoc.Text);
            parr.DiaChi = txtDiaChi.Text;
            string makh = myService.UpdateKhachHang(parr);
            if (makh != "NULL")
            {
                gv.Rows.Clear();
                frmQuanLyKhachHang_Load(sender, e);
                MessageBox.Show("Cập nhật thành công !", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
                MessageBox.Show("Cập nhật thất bại ! Hãy thử lại sau !", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }

        private void btnXoa_Click(object sender, EventArgs e)
        {
            DialogResult diag = MessageBox.Show("Bạn có chắc chắn muốn xóa khách hàng này không ?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
            if (diag == DialogResult.Yes)
            {
                KhachHang parr = new KhachHang();
                parr.MaKH = txtMaKH.Text;
                if (myService.DeleteKhachHang(parr) != "NULL")
                {
                    gv.Rows.Remove(gv.CurrentRow);
                    gv.Show();
                    MessageBox.Show("Xóa thành công !", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                    MessageBox.Show("Xóa không thành công ! Hãy thử lại sau !", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        private void btnTimKiem_Click(object sender, EventArgs e)
        {
            gv.Rows.Clear();
            page = 1;
            totalRows = myService.NumberOfKhachHang(txtTenKhachHang.Text);
            totalPages = totalRows > rowperPage ? totalRows / rowperPage + 1 : 1;
            if (totalRows % rowperPage == 0)
                totalPages = totalRows / rowperPage;
            KhachHang[] ls = myService.SelectKhachHangTheoTen_Limit(txtTenKhachHang.Text, page, rowperPage);
            object[] temp;
            foreach (KhachHang v in ls)
            {
                temp = new object[] { v.MaKH, v.HoTen, v.DiaChi, v.NgaySinh.Split(' ')[0], v.Email, v.DienThoai, v.CMND, v.TienDatCoc };
                gv.Rows.Add(temp);
            }
            gv.Show();
            flagSearch = true;
            if (totalPages == 1)
            {
                btnPrev.Enabled = false;
                btnNext.Enabled = false;
            }
            else
            {
                btnPrev.Enabled = false;
                btnNext.Enabled = true;
            }
        }

        private void btnPrev_Click(object sender, EventArgs e)
        {
            KhachHang[] ls;
            page--;
            gv.Rows.Clear();
            if (flagSearch)
            {
                ls = myService.SelectKhachHangTheoTen_Limit(txtTenKhachHang.Text, page, rowperPage);
            }
            else
            {
                ls = myService.SelectKhachHang(page, rowperPage);
            }
            object[] temp;
            foreach (KhachHang v in ls)
            {
                temp = new object[] { v.MaKH, v.HoTen, v.DiaChi, v.NgaySinh.Split(' ')[0], v.Email, v.DienThoai, v.CMND, v.TienDatCoc };
                gv.Rows.Add(temp);
            }
            gv.Show();
            if (page == 1)
            {
                btnPrev.Enabled = false;
                btnNext.Enabled = true;
            }
        }

        private void btnNext_Click(object sender, EventArgs e)
        {
            page++;
            gv.Rows.Clear();
            KhachHang[] ls;
            if (flagSearch)
            {
                ls = myService.SelectKhachHangTheoTen_Limit(txtTenKhachHang.Text, page, rowperPage);
            }
            else
            {
                ls = myService.SelectKhachHang(page, rowperPage);
            }
            object[] temp;
            foreach (KhachHang v in ls)
            {
                temp = new object[] { v.MaKH, v.HoTen, v.DiaChi, v.NgaySinh.Split(' ')[0], v.Email, v.DienThoai, v.CMND, v.TienDatCoc };
                gv.Rows.Add(temp);
            }
            gv.Show();
            if (page == totalPages)
            {
                btnNext.Enabled = false;
                btnPrev.Enabled = true;
            }
        }

        private void txtTenKhachHang_TextChanged(object sender, EventArgs e)
        {
            if (txtTenKhachHang.Text == "")
            {
                flagSearch = false;
                totalRows = 0;
                page = 1;
                rowperPage = 4;
                totalPages = 0;
                gv.Rows.Clear();
                frmQuanLyKhachHang_Load(sender, e);
            }
        }
         
    }
}
